package com.handle.common.core.exception.assertion;

import cn.hutool.core.util.ArrayUtil;
import com.handle.common.core.enums.IResponseEnum;
import com.handle.common.core.exception.BaseException;
import com.handle.common.core.exception.UserAcctException;
import com.handle.common.core.exception.ValidateException;

import java.text.MessageFormat;

/**
 * 验证码异常断言
 * @author zhangqing
 */
public interface ValidateExceptionAssert extends IResponseEnum, Assert {

    /**
     * 创建一个异常类
     * @param args 数据
     * @return 异常类
     */
    @Override
    default BaseException newException(Object... args) {
        String msg = this.getMessage();
        if (ArrayUtil.isNotEmpty(args)) {
            msg = MessageFormat.format(this.getMessage(), args);
        }

        return new ValidateException(this, args, msg);
    }

    /**
     * 创建一个异常类
     * @param t 异常类
     * @param args 参数
     * @return 基础异常类
     */
    @Override
    default BaseException newException(Throwable t, Object... args) {
        String msg = this.getMessage();
        if (ArrayUtil.isNotEmpty(args)) {
            msg = MessageFormat.format(this.getMessage(), args);
        }

        return new ValidateException(this, args, msg, t);
    }

}
